﻿#include "welcome.h"
#include "facility_manager.h"
#include "facility.h"
#include "system_s.h"
#include "data_structure_manager.h"

// 清除缓存区
void clear_input_buffer() {
    int c;
    while ((c = getchar()) != '\n' && c != EOF);
}
// 开始界面
void begin() {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  用户登录 \t\t请按 1 \n");
    printf("\t\t\t  用户注册 \t\t请按 2 \n");
    //printf("\t\t\t  忘记密码 \t\t请按 3 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 读取判断1
char judgeA() {
    while (true) {
        printf(" 请选择：");
        char c = getchar();
        clear_input_buffer();
        if (c == '1' || c == '2' || c == 'q')  return c;
        else {
            printf(" 输入有误，请重新输入\n");
        } 
    }
}
// 角色选择
void role() {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  管理员登录 \t\t请按 1 \n");
    printf("\t\t\t  场地负责人登录 \t请按 2 \n");
    printf("\t\t\t  普通用户登录 \t\t请按 3 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回 \t\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 登录
int log_in(char c, System sys) {
    char username[MAX_USERNAME];
    char password[MAX_PASSWORD];
    if (c == '1') {
        while (true) {
            printf(" 请输入管理员账号：");
            scanf_s("%s", username, MAX_USERNAME);
            clear_input_buffer();
            if (strncmp(sys.username, username, MAX_USERNAME) == 0) {
                break;
            }
            else {
                printf(" 账号错误\n");
                printf(" 是否重新输入? Y/N\n");
                printf(" 请选择：");
                char ch = getchar();
                clear_input_buffer();
                if (ch == 'Y') {
                    system("cls");
                    role();
                    continue;
                }
                else return false;
            }
        }
        while (true) {
            printf(" 请输入管理员密码：");
            scanf_s("%s", password, MAX_USERNAME);
            clear_input_buffer();
            if (strncmp(sys.password, password, MAX_USERNAME) == 0) {
                break;
            }
            else {
                printf(" 密码错误\n");
                printf(" 是否重新输入? Y/N\n");
                printf(" 请选择：");
                char ch = getchar();
                clear_input_buffer();
                if (ch == 'Y') continue;
                else return false;
            }
        }
        return true;
    }
    else if (c == '2') {
        FacilityManager* facility_manager;
        while (true) {
            printf(" 请输入场地负责人账号：");
            scanf_s("%s", username, MAX_USERNAME);
            clear_input_buffer();
            facility_manager = find_facility_manager_by_username(&sys.facility_manager_link, username);
            if (facility_manager != NULL) {
                break;
            }
            else {
                printf(" 账号错误\n");
                printf(" 是否重新输入? Y/N\n");
                printf(" 请选择：");
                char ch = getchar();
                clear_input_buffer();
                if (ch == 'Y') {
                    system("cls");
                    role();
                    continue;
                }
                else return false;
            }
        }
        while (true) {
            printf(" 请输入场地负责人密码：");
            scanf_s("%s", password, MAX_USERNAME);
            clear_input_buffer();
            if (strncmp(facility_manager->password, password, MAX_USERNAME) == 0) {
                break;
            }
            else {
                printf(" 密码错误\n");
                printf(" 是否重新输入? Y/N\n");
                printf(" 请选择：");
                char ch = getchar();
                clear_input_buffer();
                if (ch == 'Y') continue;
                else return false;
            }
        }
        return facility_manager->id;
    }
}
// 读取判断2
char judgeB() {
    while (true) {
        printf(" 请选择：");
        char c = getchar();
        clear_input_buffer();
        if (c == '1' || c == '2' || c == '3' || c == 'q' || c == 'b')  return c;
        else {
            printf(" 输入有误，请重新输入\n");
        }
    }
}
// 读取2
char chooseB(char c, System *sys) {
    int facility_manager_id = 0;
    switch (c) {
    case '1':    // 管理员登录
        if (log_in(c, *sys)) {
            // 管理员界面操作
            system("cls");
            //admin();
            Menu(sys);
            system("pause");
        }
        else {
            system("cls");
            role();
            c = judgeB();
            chooseB(c, sys);
        }
        break;
    case '2':    // 场地负责人登录
        if (facility_manager_id = log_in(c, *sys)) {
            // 场地负责人界面操作
            system("cls");
            manager();
            char c = judge_manager();
            manager_operation(c, sys,facility_manager_id);
            system("pause");
            clear_input_buffer();
        }
        else {
            system("cls");
            role();
            c = judgeB();
            chooseB(c, sys);
        }
        break;
    case '3':    // 普通用户登录
        system("cls");
        User_node* cur_user_node = create_node();
        printf_user(sys->user_link);
        system("pause");
        if (judge_user_data(sys->user_link, &cur_user_node)) {
            //登录后的界面选择
            bool flag_after = true;

            while (flag_after) {
                switch (menu_second()) {
                case 1:
                    //增添预约时间和预约场地
                    res_system(cur_user_node, sys);
                    save_res_data(&sys->reservation_link);
                    printf_cur_res(sys->reservation_link,cur_user_node);
                    break;
                case 2:
                    //查看当前默认全部历史预约信息
                    printf("亲爱的%s", cur_user_node->user.name);
                    printf("，您的历史预约信息->  \n");//查看自己的预约信息
                    printf_cur_res(sys->reservation_link, cur_user_node);
                    //按照字段进行查找相关预约信息
                    int flag_search = 1;
                    while (flag_search) {
                        int look_choose = -1;
                        while (true) {
                            system("pause");
                            system("cls");
                            printf("*******************************************\n");
                            printf("*           欢迎使用运动场馆系统          *\n");
                            printf("*******************************************\n");
                            printf("*           请选择您想查看的字段          *\n");
                            printf("*                1,场地信息               *\n");
                            printf("*                2,已使用预约             *\n");
                            printf("*                3,预约时间               *\n");
                            printf("*                4,历史预约               *\n");
                            printf("*                0,返回                   *\n");
                            printf("*******************************************\n");
                            scanf_s("%d", &look_choose);
                            clear_input_buffer();
                            if (look_choose == 0) {
                                flag_search = 0;
                                break;
                            }
                            else if (look_choose != 1 && look_choose != 2 && look_choose != 3 && look_choose != 4) {
                                printf("输入的字段有误，请重新输入！\n");
                                continue;
                            }
                            else {
                                break;
                            }
                        }
                        switch (look_choose) {
                        case 0:
                            break;
                        case 1:
                            search_res_facility(sys, cur_user_node);
                            break;
                        case 2:
                            search_res_flag(sys, cur_user_node);
                            break;
                        case 3:
                            search_res_time(sys, cur_user_node);
                            break;
                        case 4:
                            //查看当前默认全部历史预约信息
                            printf("亲爱的%s", cur_user_node->user.name);
                            printf("，您的历史预约信息->  \n");//查看自己的全部预约信息
                            printf_cur_res(sys->reservation_link, cur_user_node);
                            break;
                        }
                    }
                    
                    break;
                case 3:
                    //对未到场的预约信息进行修改
                    change_cur_res(sys, cur_user_node);
                    save_res_data(&sys->reservation_link);
                    system("pause");
                    system("cls");
                    printf("*******************************************\n");
                    printf("*           欢迎使用运动场馆系统          *\n");
                    printf("*******************************************\n");
                    printf("*当前的用户预约信息为；                   *\n");
                    printf_cur_res(sys->reservation_link, cur_user_node);
                    break;
                case 4:
                    //对未到场的预约信息进行删除
                    delete_cur_res(&sys->reservation_link, cur_user_node);
                    save_res_data(&sys->reservation_link);
                    system("pause");
                    system("cls");
                    printf("*******************************************\n");
                    printf("*           欢迎使用运动场馆系统          *\n");
                    printf("*******************************************\n");
                    printf("*当前的用户预约信息为；                   *\n");
                    printf_cur_res(sys->reservation_link, cur_user_node);
                    break;
                case 5:
                    //信息排序
                    sort_cur_res(sys,cur_user_node);
                    break;
                case 6:
                    //信息统计
                    statistic_cur_res(*sys,cur_user_node);
                    break;
                case 7:
                    //修改个人信息
                    if (cur_user_node != NULL) {
                        change_info(cur_user_node, sys->user_link);
                    }
                    //修改的信息需要写入文件，注意要用w写入
                    //释放临时节点
                    break;
                case 0:
                    flag_after = false;
                    system("cls");
                    printf("*******************************************\n");
                    printf("*                准备返回登录界面         *\n");
                    printf("*******************************************\n");
                    break;
                case -1:
                    printf("输入错误，请检查输入选项是否正确！\n");

                    break;
                }
            }
        }
        //free_list(&sys->user_link);
        break;
        //system_open();
        break;
    case 'b':    // 返回
        break;
    case 'q':    // 退出
        exit(0);
    }
}
// 管理员界面
void admin() {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t            管理员界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  场地进行增删改查 \t请按 1 \n");
    printf("\t\t\t  查看所有用户信息 \t请按 2 \n");
    printf("\t\t\t  查看管理负责人信息 \t请按 3 \n");
    printf("\t\t\t  查看所有预订信息 \t请按 4 \n");
    printf("\t\t\t  查看所有使用记录 \t请按 5 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 场地负责人界面
void manager() {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t\t  场地负责人界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  查看掌管的场馆 \t请按 1 \n");
    printf("\t\t\t  开具场地使用记录 \t请按 2 \n");
    printf("\t\t\t  密码维护\t\t请按 3 \n");
    printf("\t\t\t  信息查询\t\t请按 4 \n");
    printf("\t\t\t  信息排序\t\t请按 5 \n");
    printf("\t\t\t  信息统计\t\t请按 6 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回 \t\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 查询功能界面
void look_for(System sys) {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t             查询界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  查询预订信息 \t\t请按 1 \n");
    printf("\t\t\t  查询使用记录 \t\t请按 2 \n");
    printf("\t\t\t  查询场地信息 \t\t请按 3 \n");
    printf("\t\t\t  查询用户信息 \t\t请按 4 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 排序功能界面
void my_sort(System sys) {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t             排序界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  查看预订信息（单项排序）\t请按 1 \n");
    printf("\t\t\t  查看预订信息（组合排序）\t请按 2 \n");
    printf("\t\t\t  查看使用记录（单项排序）\t请按 3 \n");
    printf("\t\t\t  查看使用记录（组合排序）\t请按 4 \n");
    printf("\t\t\t  查看场地（单项排序）\t\t请按 5 \n");
    printf("\t\t\t  查看场地（组合排序）\t\t请按 6 \n");
    printf("\t\t\t  查看用户（单项排序）\t\t请按 7 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 统计功能界面
void statistic(System sys) {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t             统计界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  查看预订信息统计信息\t\t请按 1 \n");
    printf("\t\t\t  查看使用记录统计信息\t\t请按 2 \n");
    printf("\t\t\t  查看场地信息统计信息\t\t请按 3 \n");
    printf("\t\t\t  查看预约信息总统计\t\t请按 4 \n");
    printf("\t\t\t  查看使用记录总统计\t\t请按 5 \n");
    printf("\t\t\t  查看未到场预约统计\t\t请按 6 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 查找预订信息界面
void look_for_res(System sys) {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t          查询预订界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  查询预订信息（姓名 模糊） \t请按 1 \n");
    printf("\t\t\t  查询预订信息（电话）\t\t请按 2 \n");
    printf("\t\t\t  查询预订信息（日期）\t\t请按 3 \n");
    printf("\t\t\t  查询预订信息（姓名+日期）\t请按 4 \n");
    printf("\t\t\t  查询预订信息（电话+日期）\t请按 5 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 查找使用记录信息界面
void look_for_record(System sys) {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t         查询使用记录界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  查询使用记录（用户ID）\t请按 1 \n");
    printf("\t\t\t  查询使用记录（场地ID）\t请按 2 \n");
    printf("\t\t\t  查询使用记录（日期）\t\t请按 3 \n");
    printf("\t\t\t  查询使用记录（日期+用户）\t请按 4 \n");
    printf("\t\t\t  查询使用记录（日期+场地）\t请按 5 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
//// 查找场地信息界面
//void look_for_facility(System sys) {
//    printf(" -----------------------------------------------------------------------------------\n");
//    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
//    printf("\t\t\t          查询场地界面    \t\t\t\n");
//    printf(" -----------------------------------------------------------------------------------\n");
//    printf("\t\t\t  查询场地信息（类型） \t请按 1 \n");
//    printf("\t\t\t  查询场地信息（最大容纳人数） \t请按 2 \n");
//    printf("\t\t\t  查询场地信息（场地ID） \t请按 3 \n");
//    printf("\t\t\t  查询场地信息（场地名称 模糊） \t请按 4 \n");
//    printf("\t\t\t  查询场地信息（场地面积） \t请按 5 \n");
//    printf("\t\t\t  查询场地信息（价格） \t请按 6 \n");
//    printf("\t\t\t  查询场地信息（类型+价格） \t请按 7 \n");
//    printf("\t\t\t  查询场地信息（类型+面积） \t请按 8 \n");
//    printf(" -----------------------------------------------------------------------------------\n");
//    printf("\t\t\t  返回系统界面\t\t请按 b \n");
//    printf("\t\t\t  退出 \t\t\t请按 q \n");
//    printf(" -----------------------------------------------------------------------------------\n");
//}
// 查找用户信息界面
void look_for_user(System sys) {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t          查询用户界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  查询用户信息（昵称 模糊） \t请按 1 \n");
    printf("\t\t\t  查询用户信息（电话） \t\t请按 2 \n");
    printf("\t\t\t  查询用户信息（身份证号） \t请按 3 \n");
    printf("\t\t\t  查询用户信息（姓名 模糊） \t请按 4 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}


// 预订消息排序
void sort_reservation() {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t         预订信息排序界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  Order by date           \t\t请按 1 \n");
    printf("\t\t\t  Order by id             \t\t请按 2 \n");
    printf("\t\t\t  Order by facility_id    \t\t请按 3 \n");
    printf("\t\t\t  Order by name           \t\t请按 4 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 使用记录排序
void sort_record() {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t         使用记录排序界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  Order by date           \t\t请按 1 \n");
    printf("\t\t\t  Order by id             \t\t请按 2 \n");
    printf("\t\t\t  Order by facility_id    \t\t请按 3 \n");
    printf("\t\t\t  Order by username       \t\t请按 4 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 场地排序
void sort_facility() {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t         场地排序界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  Order by id             \t\t请按 1 \n");
    printf("\t\t\t  Order by area           \t\t请按 2 \n");
    printf("\t\t\t  Order by type           \t\t请按 3 \n");
    printf("\t\t\t  Order by fee            \t\t请按 4 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 用户排序
void sort_user() {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t         用户排序界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  Order by name           \t\t请按 1 \n");
    printf("\t\t\t  Order by phone          \t\t请按 2 \n");
    printf("\t\t\t  Order by name phone     \t\t请按 3 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 预约信息组合排序
void sort_res() {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t         预订信息排序界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  Order by date           \t\t请按 1 \n");
    printf("\t\t\t  Order by id             \t\t请按 2 \n");
    printf("\t\t\t  Order by facility_id    \t\t请按 3 \n");
    printf("\t\t\t  Order by name           \t\t请按 4 \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 使用记录排序
void sort_records() {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t         使用记录排序界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  Order by date           \t\t请按 1 \n");
    printf("\t\t\t  Order by id             \t\t请按 2 \n");
    printf("\t\t\t  Order by facility_id    \t\t请按 3 \n");
    printf("\t\t\t  Order by username       \t\t请按 4 \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 场地组合排序
void sort_fac() {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t         场地排序界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  Order by id             \t\t请按 1 \n");
    printf("\t\t\t  Order by area           \t\t请按 2 \n");
    printf("\t\t\t  Order by type           \t\t请按 3 \n");
    printf("\t\t\t  Order by fee            \t\t请按 4 \n");
    printf(" -----------------------------------------------------------------------------------\n");
}



//需求！！！
#include <ctype.h>
// 查找场地信息界面
void look_for_facility(System sys) {
    char input[100] = { 0 };
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t          查询场地界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  查询场地信息（类型） \t\t请按 1 \n");
    printf("\t\t\t  查询场地信息（最大容纳人数） \t请按 2 \n");
    printf("\t\t\t  查询场地信息（场地ID） \t请按 3 \n");
    printf("\t\t\t  查询场地信息（场地名称 模糊） 请按 4 \n");
    printf("\t\t\t  查询场地信息（场地面积） \t请按 5 \n");
    printf("\t\t\t  查询场地信息（价格） \t\t请按 6 \n");
    printf("\t\t\t  查询场地信息（类型+价格） \t请按 7 \n");
    printf("\t\t\t  查询场地信息（类型+面积） \t请按 8 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
    char choice;
    scanf_s("%c", &choice);
    clear_input_buffer3();

    switch (choice) {
    case '1': // 按类型查询
        query_facility_by_type(sys);
        system("pause");
        break;
    case '2': // 按最大容纳人数查询
        query_facility_by_max_person(sys);
        system("pause");
        break;
    case '3': // 按场地ID查询
        query_facility_by_id(sys);
        system("pause");
        break;
    case '4': // 模糊查询场地名称
        fuzzy_search_facility(sys);
        system("pause");
        break;
    case '5': // 按面积查询
        query_facility_by_area(sys);
        system("pause");
        break;
    case '6': // 按价格查询
        query_facility_by_price(sys);
        system("pause");
        break;
    case '7': // 按类型+价格查询
        query_facility_by_type_price(sys);
        system("pause");
        break;
    case '8': // 按类型+面积查询
        query_facility_by_type_area(sys);
        system("pause");
        break;
    case 'b': // 返回系统界面
        Menu(&sys);
        break;
    case 'q': // 退出系统
        exit(0);
    default:
        printf("输入错误，请重试\n");
        look_for_facility(sys); // 返回查询界面
    }
}

//// 查找用户信息界面
//void look_for_user(System* sys) {
//    char choice;
//    char input[100] = { 0 }; // 用于存储用户输入的查询条件
//    User_list* user_list = &sys->user_link;
//
//    while (1) {
//        // 显示查询界面
//        printf(" -----------------------------------------------------------------------------------\n");
//        printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
//        printf("\t\t\t          查询用户界面            \t\t\t\n");
//        printf(" -----------------------------------------------------------------------------------\n");
//        printf("\t\t\t  查询用户信息（昵称 模糊） \t请按 1 \n");
//        printf("\t\t\t  查询用户信息（电话） \t\t请按 2 \n");
//        printf("\t\t\t  查询用户信息（身份证号） \t请按 3 \n");
//        printf("\t\t\t  查询用户信息（真实姓名） \t请按 4 \n");
//        printf(" -----------------------------------------------------------------------------------\n");
//        printf("\t\t\t  返回系统界面\t\t请按 b \n");
//        printf("\t\t\t  退出 \t\t\t\t请按 q \n");
//        printf(" -----------------------------------------------------------------------------------\n");
//
//        // 提示用户输入
//        printf("请选择操作：");
//        scanf(" %c", &choice);
//        getchar(); // 清除缓冲区中的换行符
//
//        switch (choice) {
//        case '1': // 按昵称模糊查询
//            printf("请输入昵称关键字：");
//            fgets(input, sizeof(input), stdin);
//            input[strcspn(input, "")] = '\0'; // 去掉换行符
//                printf("查询结果：");
//                    for (User_node* cur_node = user_list->head; cur_node != NULL; cur_node = cur_node->next) {
//                        if (strstr(cur_node->user.nickname, input) != NULL) { // 模糊匹配
//                            printf("ID: %s, 昵称: %s, 电话: %s, 身份证号: %s, 真实姓名: %s",
//                                cur_node->user.id,
//                                cur_node->user.nickname,
//                                cur_node->user.phone,
//                                cur_node->user.id_name,
//                                cur_node->user.name);
//                        }
//                    }
//            break;
//
//        case '2': // 按电话查询
//            printf("请输入电话：");
//            fgets(input, sizeof(input), stdin);
//            input[strcspn(input, "")] = '\0'; // 去掉换行符
//                printf("查询结果：");
//                    for (User_node* cur_node = user_list->head; cur_node != NULL; cur_node = cur_node->next) {
//                        if (strcmp(cur_node->user.phone, input) == 0) { // 精确匹配
//                            printf("ID: %s, 昵称: %s, 电话: %s, 身份证号: %s, 真实姓名: %s",
//                                cur_node->user.id,
//                                cur_node->user.nickname,
//                                cur_node->user.phone,
//                                cur_node->user.id_name,
//                                cur_node->user.name);
//                            break;
//                        }
//                    }
//            break;
//
//        case '3': // 按身份证号查询
//            printf("请输入身份证号：");
//            fgets(input, sizeof(input), stdin);
//            input[strcspn(input, "")] = '\0'; // 去掉换行符
//                printf("查询结果：");
//                    for (User_node* cur_node = user_list->head; cur_node != NULL; cur_node = cur_node->next) {
//                        if (strcmp(cur_node->user.id_name, input) == 0) { // 精确匹配
//                            printf("ID: %s, 昵称: %s, 电话: %s, 身份证号: %s, 真实姓名: %s",
//                                cur_node->user.id,
//                                cur_node->user.nickname,
//                                cur_node->user.phone,
//                                cur_node->user.id_name,
//                                cur_node->user.name);
//                            break;
//                        }
//                    }
//            break;
//
//        case '4': // 按真实姓名查询
//            printf("请输入真实姓名：");
//            fgets(input, sizeof(input), stdin);
//            input[strcspn(input, "")] = '\0'; // 去掉换行符
//                printf("查询结果：");
//                    for (User_node* cur_node = user_list->head; cur_node != NULL; cur_node = cur_node->next) {
//                        if (strstr(cur_node->user.name, input) != NULL) { // 模糊匹配
//                            printf("ID: %s, 昵称: %s, 电话: %s, 身份证号: %s, 真实姓名: %s",
//                                cur_node->user.id,
//                                cur_node->user.nickname,
//                                cur_node->user.phone,
//                                cur_node->user.id_name,
//                                cur_node->user.name);
//                        }
//                    }
//            break;
//
//        case 'b': // 返回系统界面
//            return;
//
//        case 'q': // 退出
//            printf("退出查询界面。");
//                return;
//
//        default:
//            printf("无效的选择，请重新输入！");
//                break;
//        }
//    }
//}

// 统计界面
// 使用记录统计界面
void record_statistic(System sys) {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t             统计界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  统计使用记录（根据用户）\t\t请按 1 \n");
    printf("\t\t\t  统计使用记录（根据场地）\t\t请按 2 \n");
    printf("\t\t\t  统计使用记录（根据日期）\t\t请按 3 \n");
    printf("\t\t\t  统计使用记录（根据用户 + 场地）\t请按 4 \n");
    printf("\t\t\t  统计使用记录（根据日期范围）\t\t请按 5 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 预约信息统计界面
void reservation_statistic(System sys) {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t             统计界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  统计预约信息（根据用户）\t\t请按 1 \n");
    printf("\t\t\t  统计预约信息（根据场地类型）\t\t请按 2 \n");
    printf("\t\t\t  统计预约信息（根据用户+场地类型）\t请按 3 \n");
    printf("\t\t\t  统计预约信息（根据日期范围）\t\t请按 4 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
// 场地信息统计界面
void facility_statistic(System sys) {
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t     欢迎来到运动场馆管理系统    \t\t\t\n");
    printf("\t\t\t             统计界面    \t\t\t\n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  统计场地（根据类型）\t\t请按 1 \n");
    printf("\t\t\t  统计场地（根据价格）\t\t请按 2 \n");
    printf("\t\t\t  统计场地（根据面积）\t\t请按 3 \n");
    printf("\t\t\t  统计场地（根据类型 + 价格）\t请按 4 \n");
    printf("\t\t\t  统计场地（根据类型 + 面积）\t请按 5 \n");
    printf("\t\t\t  统计场地（根据面积范围）\t请按 6 \n");
    printf("\t\t\t  统计场地（根据价格范围）\t请按 7 \n");
    printf(" -----------------------------------------------------------------------------------\n");
    printf("\t\t\t  返回系统界面\t\t请按 b \n");
    printf("\t\t\t  退出 \t\t\t请按 q \n");
    printf(" -----------------------------------------------------------------------------------\n");
}
